package com.xuanyuan.protobuf

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity


class ProtobufActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_protobuf)
       val  time= System.currentTimeMillis()
        Log.i("1111"," 数据111111111  =="+time)

//
//        basefun()
////
////        protoList()
////
////        mergeFrom()
//
//        enumFunc()

    }

//    private  fun test(){
//        val mWorkStatus = WorkStatusOuterClass.WorkStatus.newBuilder().build()
//
//        val jsonFormat=JsonFormat();
//        val  mWorkStatusJson = jsonFormat.printToString(mWorkStatus)
//
//        Log.i("111111", "Test123 mWorkStatus = $mWorkStatus")
//        Log.i("111111", "Test123 mWorkStatus.getStateValue = " + mWorkStatus.stateValue)
//        Log.i("111111", "Test123 mWorkStatus.getState().name() = " + mWorkStatus.state.name)
//        Log.i("111111", "Test123 mWorkStatus.toString = ${mWorkStatus.toString()}")
//
//
//        val state = WorkStatusOuterClass.WorkStatus.State.CLEANING
//        val mWorkStatus2 =
//            WorkStatusOuterClass.WorkStatus.newBuilder().setState(state).build()
//        Log.i("111111", "Test123 mWorkStatus2 = $mWorkStatus2")
//    }

//    /**
//     * 常规方法
//     */
//    fun basefun(){
//        // 创建对象
//        var student= Student.newBuilder().setPhone("17712345678").build()
//        val student2= Student.newBuilder().setPhone("17712345678").build()
//        Log.i("11111111111111111", "student= $student")
//        Log.i( "11111111111111111", "student.toString()= $student")
//        Log.i( "11111111111111111", "student2.toString()= $student2")
//
//        // 把对象序列化成字节数组
//        val bt: ByteArray = student.toByteArray()
//        Log.i("11111111111111111","student.toByteArray()= "+ bt.contentToString())
//        // 把对象转换成字节String
//        val bys = student.toByteString()
//        Log.i("11111111111111111","student.toByteString()= "+bys.toStringUtf8())
////        phone: "17712345678"
////        34, 11, 49, 55, 55, 49, 50, 51, 52, 53, 54, 55, 56
////            0000 1011    1   7   7   1  2   3   4   5    6  7   8
////            0011 0001
//
//        //从字节数组中解析成对象
//        val student20 = Student.parseFrom(bt)
//        Log.i("11111111111111111", "20 Student.parseFrom= $student20")
//        val student21 = Student.parseFrom(bys)
//        Log.i("11111111111111111", "21 Student.parseFrom= $student21")
//
//
//        student=student.toBuilder().setPhone("17711112222").setEmail("17711112222@163.com").build()
//        Log.i("11111111111111111", "设置属性  student= $student")
//
//        student=student.toBuilder().clearPhone().build()
//        Log.i("11111111111111111", "清空号码  student= $student")
//
//        student=student.toBuilder().setMonth(StudentOuterClass.Month.MAY).build()
//        Log.i("11111111111111111", "月份  student= $student")
//
//        student=student.toBuilder().clear().build()
//        Log.i("11111111111111111", "清空属性值  student= $student")
//
//    }
//
//    /**
//     * 集合
//     */
//    private fun protoList(){
//        var student= Student.newBuilder().setName("ken").build()
//        //获取集合长度
//        val size = student.teachersCount
//        Log.i("11111111111111111", " student.teachersCount= $size")
//
//        //获取指定index的teacher对象，不存在则返回null
//        val t1 = student.teachersList.getOrNull(1)
//        Log.i("11111111111111111", " student.teachersList.getOrNull(1) $t1")
//
//        // 获取指定index的teacher对象，不存在则返回默认值
//        val teacher=Teacher.newBuilder().build()
//        val t2 = student.teachersList.getOrElse(1) { teacher }
//        Log.i("11111111111111111", " student.teachersList.getOrElse $t2")
//
//        //获取对象的索引
//        val index = student.teachersList.indexOf(teacher)
//        Log.i("11111111111111111", " 指定索引对象index $index")
//
//        // 获取集合最后一个元素index
//        val lastIndex = student.teachersList.lastIndex
//        Log.i("11111111111111111", " lastIndex对象index $lastIndex")
//
//
//        val teachersList = student.teachersList
//        val list = ArrayList(teachersList)
//        list.add(teacher)
//        student = student.toBuilder().addAllTeachers(list).build()
//        val t3 = student.teachersList[0]
//        Log.i("11111111111111111", " student.teachersList[1]= $t3")
//
//    }
//
//    /**
//     * 文件操作
//     */
//    fun fileOperate(){
//        val student = Student.newBuilder().setName("ken").build()
//        //将二进制数据写入文件
//        val filePath = externalCacheDir?.absolutePath + File.separator + "cache.cache"
//        FileOutputStream(filePath).use { student.writeTo(it) }
//
//        //从文件中读取二进制，并且转换成对象
//        FileInputStream(filePath).use { val p2 = Student.parseFrom(it) }
//    }
//
//    /**
//     * 文件覆盖
//     */
//    private fun mergeFrom(){
//        val p1 = Student.newBuilder().setName("ken").setId(100).setPhone("177").build()
//        val p2 = Student.newBuilder().setName("luo").setId(50).build()
//        //p2数据覆盖p1数据，没有覆盖的字段，保留p1数据
//        val p3 = p1.toBuilder().mergeFrom(p2).build()
//        Log.i("11111111111111111", " mergeFrom= $p3")
//
//    }
//
//    /**
//     * 枚举方法
//     */
//    fun enumFunc(){
//        val student = Student.newBuilder().setMonth(StudentOuterClass.Month.MONTH_UNSPECIFIED).build()
//        Log.i("11111111111111111", "月份= " + student.toByteArray().contentToString()  )
//
//        val tt00 = Student.newBuilder().setName("ken").build()
//        Log.i("11111111111111111", "tt00.id= " + tt00.toByteArray().contentToString()  )
//
//        val tt = Student.newBuilder().setId(0).build()
//        Log.i("11111111111111111", "tt.id= " + tt.toByteArray().contentToString())
//
//        val tt11 = Student.newBuilder().setAge(69).build()
//        Log.i("11111111111111111", "tt11.id= " + tt11.toByteArray().contentToString()  )
//
//        val tt22 = Student.newBuilder().setEmail("1211").build()
//        Log.i("11111111111111111", "tt22.id= " + tt22.toByteArray().contentToString()  )
//
//        val tt33 = Student.newBuilder().setSex(true).build()
//        Log.i("11111111111111111", "tt33.id= " + tt33.toByteArray().contentToString()  )
//
//        val tt44 = Student.newBuilder()
//            .setName("ken")
//            .setId(5)
//            .setAge(69)
//            .setEmail("1211")
//            .setSex(true).build()
//        Log.i("11111111111111111", "tt44.id= " + tt44.toByteArray().contentToString()  )
//
//    }

}

